﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using daStaticAnalyser.Analysers.Settings;
using daStaticAnalyser.Analysers;
using daStaticAnalyser;
using daBase.Analyser;
using daSyntaxAnalyser.SyntaxTree;
using daSyntaxAnalyser;

namespace DifferentAnalizers
{
    /// <summary>
    /// Анализатор - цифры в идентификаторе
    /// </summary>
    [AnalyserDefaultSettings("Цифры в идентификаторе.", "Неправильный идентификатор (содержит цифры)!", 10, "Цифры в определении идентификатора не допустимы.")]
    public class NoDigitInIdAnalyser : IdAnalyser
    {
        private static Regex digits = new Regex("\\d");

        /// <summary>
        /// Собственно анализ
        /// </summary>
        /// <param name="e">параметр анализа</param>
        protected override void DoAnalyse(SyntaxTreeArgs e)
        {
            if (e.Element is IdElement)
            {
                TokenInfo Id = (e.Element as IdElement).Id;
                if ((Id != null) && (digits.IsMatch((e.Element as IdElement).Id.Text)) && (!(settings as IdSettings).DfmIsGood || !Id.DfmIds.Contains(Id.Text.ToLower())))
                    AddError(Id, Id.Text);
            }
        }
    }
}
